home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1985-04-26 | 14.2 KB | 312 lines |
- 2000 ' *******************************************************************
- 2010 ' HELP PROGRAM MARCH 1985
- 2020 ' *******************************************************************
- 2030 ' WRITTEN BY JAMES KENDRICK WASHINGTON DC
- 2040 ' *******************************************************************
- 2050 ' COPYRIGHT 1985 BY JAMES KENDRICK (202) 638-7627
- 2060 ' *******************************************************************
- 2070 '
- 2080 ' This is a program written for BASICA. It has been written
- 2090 ' and tested on an IBM PC-XT. It has also been tested on
- 2100 ' a Compaq.
- 2110 '
- 2120 ' The purpose of this program is to provide on-screen help
- 2130 ' with PC-DOS commands. The program relies on external
- 2140 ' ASCII text files to provide the screens about each DOS
- 2150 ' command. Thus the text (and the menu) can be revised
- 2160 ' quickly.
- 2170 '
- 2180 ' This program is Copyrighted (C) 1985 by Kendrick &
- 2190 ' Company. Sale of the program or use of the code
- 2200 ' for commercial purposes is prohibited.
- 2210 '
- 2220 ' Kendrick & Company
- 2230 ' 800 18th Street, N.W. #500
- 2240 ' Washington, DC 20006
- 2250 '
- 2260 ' DECLARATIONS ******************************************************
- 2270 '
- 2280 CLEAR,,1024
- 2290 OPTION BASE 1
- 2300 DEFINT L - Z
- 2310 '
- 2320 KEY 1,"" : KEY 2,"" : KEY 3,"" ' CLEAR KEYS
- 2330 KEY 4,"" : KEY 5,"" : KEY 6,""
- 2340 KEY 7,"" : KEY 8,"" : KEY 9,""
- 2350 KEY 10,""
- 2360 KEY OFF
- 2370 '
- 2380 LET MODE = 1 ' MODE 0 = INITIAL SCREEN; MODE 1 = BASIC HELP; MODE 2 = EXTRA HELP
- 2390 LET EXTRAHELPFILES = 9 ' NUMBER OF EXTENDED HELP FILES
- 2400 '
- 2410 DIM TEMP1$(80) ' TEMPORARY STRING VARIABLE FOR TEXT
- 2420 DIM TEMP2$(12) ' TEMPORARY VARIABLE FOR FILE NAMES
- 2430 DIM MENULINE$(24) ' STRING ARRAY FOR MENU TEXT LINES
- 2440 DIM FILENAME$(24) ' STRING ARRAY FOR FILE NAMES OF HELP TEXT
- 2450 DIM ERRORMESSAGE$(80)
- 2460 ' FILE$ ' STRING VARIABLE FOR OPENING DISK FILES
- 2470 ' MESSAGE$ ' STRING FOR MESSAGES ON ROW 25 OF SCREEN
- 2480 ' CHOICE$ ' STRING FOR KEYBOARD INPUT
- 2490 ' ANYKEY$ ' STRING FOR KEYBOARD INPUT (PRESS ANY KEY)
- 2500 ' POINTER ' USED BY PROGRAM FOR COUNTING
- 2510 ' MENUNUMBER ' NUMBER OF MENU ITEMS
- 2520 '
- 2530 ' *******************************************************************
- 2540 ' CORE PROGRAM ******************************************************
- 2550 '
- 2560 GOSUB 4130 ' INITIAL SCREEN ON ENTERING PROGRAM
- 2570 GOSUB 4400 ' READ DATA
- 2580 FOR LOOP = 1 TO 2 STEP 0 ' ENDLESS LOOP
- 2590 GOSUB 2830 ' SHOW MENU OF CHOICES
- 2600 IF X = 24 THEN GOSUB 4840 : CLS : SYSTEM ' CHOICE FOR EXITING PROGRAM
- 2610 IF X = -1 THEN MODE = 2 : GOSUB 3310: GOTO 2580 ' EXTENDED HELP FEATURE
- 2620 LET MESSAGE$ = "PRESS ANY KEY TO CONTINUE"
- 2630 MODE = 1 : GOSUB 3700 ' DISPLAY SELECTED TEXT FILE
- 2640 GOSUB 2680 ' WAIT LOOP - PRESS ANY KEY
- 2650 NEXT LOOP ' REPEAT ENDLESS LOOP
- 2660 END ' END OF CORE PROGRAM
- 2670 '
- 2680 '
- 2690 ' *******************************************************************
- 2700 ' WAIT LOOP *********************************************************
- 2710 '
- 2720 LET READY = 0
- 2730 FOR TYPECLEAR = 1 TO 5
- 2740 LET ANYKEY$ = INKEY$
- 2750 LET ANYKEY$ = ""
- 2760 NEXT TYPECLEAR
- 2770 FOR WAITLOOP = 1 TO 2 STEP 0
- 2780 LET ANYKEY$ = INKEY$
- 2790 LET READY = LEN(ANYKEY$)
- 2800 IF READY = 1 THEN RETURN
- 2810 NEXT WAITLOOP
- 2820 '
- 2830 '
- 2840 ' *******************************************************************
- 2850 ' DISPLAY MENU AND MAKE HELP CHOICE *********************************
- 2860 '
- 2870 ' * PREPARE MENU *
- 2880 '
- 2890 COLOR ,1,1 ' SET BACKGROUND COLOR
- 2900 CLS ' CLEAR SCREEN
- 2910 COLOR 23,1 ' COLOR FOR ROW 25
- 2920 LOCATE 25,5,0 ' TURN OFF CURSOR
- 2930 PRINT "SELECT A LETTER FOR HELP YOU WANT ... X to EXIT ... ? for HELP"
- 2940 LOCATE 1,5 ' GO TO TOP FOR MENU TITLE
- 2950 COLOR 10,1 ' COLOR FOR MENU TITLE
- 2960 PRINT "............. MENU FOR HELP WITH PC-DOS .............."
- 2970 COLOR 14 ' COLOR FOR MENU BODY
- 2980 FOR SCREENLOOP = 3 TO MENUNUMBER+2 'BEGIN WITH ROW THREE
- 2990 LOCATE SCREENLOOP,5
- 3000 PRINT MENULINE$(SCREENLOOP-2); ' PRINT LINE OF MENU TEXT
- 3010 NEXT SCREENLOOP ' REPEAT UNTIL DONE
- 3020 '
- 3030 ' * WAIT FOR MENU CHOICE AND EVALUATE CHOICE *
- 3040 '
- 3050 PLAY "T200 MS G" ' GET ATTENTION
- 3060 KEY OFF
- 3070 FOR TYPECLEAR = 1 TO 5 ' CLEAR KEYBOARD
- 3080 LET CHOICE$ = INKEY$
- 3090 LET CHOICE$ = "" ' CLEAR VARIABLE
- 3100 NEXT TYPECLEAR
- 3110 FOR SELECTION = 1 TO 2 STEP 0 ' LOOP WAITING FOR KEYSTROKE
- 3120 LET CHOICE$ = INKEY$ ' CHECK FOR KEYSTROKE
- 3130 LET STRINGLENGTH = LEN(CHOICE$) ' CHECK FOR LENGTH OF VARIABLE
- 3140 IF STRINGLENGTH = 1 THEN 3170 ' LENGTH > 0 IF KEY PRESSED
- 3150 NEXT SELECTION ' DO LOOP AGAIN IF LENGTH = 0
- 3160 '
- 3170 LET X = ASC(CHOICE$) - 64 ' CONVERT FROM ASCII "A" TO 1 ETC.
- 3180 IF X = -1 OR X = - 17 THEN LET X = -1 : GOTO 3280 ' CHECK FOR HELP KEY: ? OR /
- 3190 IF X < 0 THEN X = 0 ' KEY < "A" WAS PRESSED -- NO GO
- 3200 IF X > 32 THEN X = X - 32 ' CHECK FOR LOWER CASE ALPHABET
- 3210 IF X = 24 THEN 3280 ' KEY PRESSED IS X TO EXIT
- 3220 IF X > MENUNUMBER THEN X = 0 ' BEYOND RANGE OF CHOICES -- NO GO
- 3230 IF X > 0 THEN 3270 ' GO! THIS IS A VALID CHOICE
- 3240 LET CHOICE$ = "" ' CLEAR VARIABLE FOR NO GO
- 3250 GOTO 3110 ' NO GO -- REPEAT LOOP
- 3260 '
- 3270 LET FILE$ = FILENAME$(X) ' FILENAME CORRESPONDS TO CHOICE
- 3280 LOCATE 25,5: PRINT " "; ' CLEAR MESSAGE LINE
- 3290 RETURN ' RETURN TO CORE PROGRAM
- 3300 '
- 3310 '
- 3320 ' *******************************************************************
- 3330 ' EXTENDED HELP *****************************************************
- 3340 '
- 3350 KEY OFF ' RESET KEYS
- 3360 KEY(12) ON ' CURSOR KEYS
- 3370 KEY(13) ON
- 3380 KEY(14) ON
- 3390 LET HELPFILE = 1 ' COUNTER FOR MULTIPLE TEXT FILES
- 3400 LET MODE = 2 ' SPECIFICATIONS FOR COLOR
- 3410 LET DONE = 0 ' 1 = EXIT EXTRA HELP
- 3420 LET FILE$ = "HELP0001.TXT" ' FIRST TEXT FILE
- 3430 ' SET UP MESSAGE STRING
- 3440 LET MESSAGE$ = CHR$(26)+" NEXT PAGE ... "+CHR$(25)+" LEAVE EXTRA HELP"
- 3450 LET MESSAGE1$ = MESSAGE$
- 3460 LET MESSAGE2$ = MESSAGE$ + " ... " + CHR$(27)+" LAST PAGE"
- 3470 GOSUB 3700 ' DISPLAY FIRST SCREEN
- 3480 '
- 3490 ' * WAIT FOR KEYBOARD INPUT USING CURSOR KEYS *
- 3500 '
- 3510 FOR WAITLOOP = 1 TO 2 STEP 0
- 3520 ON KEY(14) GOSUB 3600
- 3530 ON KEY(12) GOSUB 3630
- 3540 ON KEY(13) GOSUB 3610
- 3550 IF DONE = 1 THEN KEY OFF : RETURN
- 3560 NEXT WAITLOOP
- 3570 '
- 3580 ' * WORK WITH KEYBOARD INPUT *
- 3590 '
- 3600 LET READY = 0 : DONE = 1 : RETURN ' DOWN CURSOR FOR EXIT
- 3610 IF HELPFILE < EXTRAHELPFILES THEN LET HELPFILE = HELPFILE + 1 ELSE LET HELPFILE = 1 : BEEP ' RIGHT CURSOR; NEXT PAGE
- 3620 GOTO 3640 ' SKIP ACTION FOR LEFT CURSOR
- 3630 IF HELPFILE >1 THEN LET HELPFILE = HELPFILE - 1 : ELSE BEEP ' LEFT CURSOR; PAGE BACK
- 3640 IF HELPFILE > 1 THEN LET MESSAGE$ = MESSAGE2$ ELSE LET MESSAGE$ = MESSAGE1$
- 3650 LET CHARS = LEN(STR$(HELPFILE)) - 1 ' LENGTH OF NUMBER LESS SPACE FOR SIGN
- 3660 MID$(FILE$,9-CHARS,CHARS) = MID$(STR$(HELPFILE),2,CHARS) ' CHANGE NUMBER IN FILE NAME
- 3670 GOSUB 3700 ' DISPLAY A SCREEN OF TEXT
- 3680 LET DONE = 0 ' NOT READY TO LEAVE EXTENDED HELP
- 3690 RETURN ' RETURN TO EXTENDED HELP WAIT LOOP FOR CURSOR KEYS
- 3700 '
- 3710 ' *******************************************************************
- 3720 ' ROUTINE FOR ENTERING TEXT FILES ***********************************
- 3730 '
- 3740 ON ERROR GOTO 3980
- 3750 CLOSE #1 ' CLOSE JUST IN CASE OPEN
- 3760 OPEN "I",#1,FILE$ ' OPEN TEXT FILE
- 3770 LET POINTER = 1 ' SET COUNTER
- 3780 IF MODE = 0 THEN COLOR 2,0,0 ' SET BACKGROUND COLOR FOR MODES
- 3790 IF MODE = >0 THEN COLOR ,0,0
- 3800 CLS ' CLEAR TO PROPER BACKGROUND
- 3810 COLOR 14
- 3820 LOCATE 25,5,0 : PRINT MESSAGE$ ' PRINT MESSAGE PROMPT
- 3830 FOR TEXTLOOP = 1 TO 2 STEP 0 ' ENDLESS LOOP
- 3840 ON ERROR GOTO 4100
- 3850 INPUT#1,TEMP1$ ' GET LINE OF TEXT FROM FILE
- 3860 LET CHARACTER$ = MID$(TEMP1$,1,1)
- 3870 IF CHARACTER$ = ";" THEN MID$(TEMP1$,1,1) = " "
- 3880 IF TEMP1$ = "###" THEN CLOSE #1: ON ERROR GOTO 0 : RETURN :' EXIT IF DONE
- 3890 IF MODE = 0 THEN COLOR 2,0,0
- 3900 IF MODE = 1 THEN IF POINTER = 1 THEN COLOR 9,0 ELSE COLOR 11,0
- 3910 IF MODE = 2 THEN IF POINTER = 1 THEN COLOR 9,0 ELSE IF POINTER = 2 THEN COLOR 14,0 ELSE COLOR 10,0
- 3920 LOCATE POINTER,5: PRINT TEMP1$; ' GO TO SCREEN LOCATION
- 3930 LET POINTER = POINTER + 1 ' INCREMENT COUNTER BY ONE
- 3940 NEXT TEXTLOOP ' DO IT AGAIN, SAM
- 3950 '
- 3960 ' * ERROR TRAP FOR DISK DRIVE AND FILE *
- 3970 '
- 3980 LET ERRORMESSAGE$ = " "
- 3990 IF ERR = 71 THEN LET ERRORMESSAGE$ = "DISK DRIVE IS NOT READY"
- 4000 IF ERR = 53 THEN LET ERRORMESSAGE$ = "TEXT FILE NOT FOUND"
- 4010 IF ERR <> 71 AND ERR <> 53 THEN LET ERRORMESSAGE$ = "UNDOCUMENTED ERROR
- 4020 LET ERRORMESSAGE$ = ERRORMESSAGE$ + " ... CORRECT & THEN PRESS ANY KEY"
- 4030 LOCATE 25,5 : PRINT SPACE$(65);CHR$(7);CHR$(7);CHR$(7);
- 4040 LOCATE 25,5 : PRINT ERRORMESSAGE$;
- 4050 GOSUB 2680
- 4060 RESUME 3700
- 4070 '
- 4080 '
- 4090 ' * ERROR TRAP FOR TOO RAPID ENTRY OF CURSOR KEYS *
- 4100 '
- 4110 RESUME 3700
- 4120 '
- 4130 '
- 4140 ' *******************************************************************
- 4150 ' INITIAL SCREEN ON ENTERING PROGRAM ********************************
- 4160 '
- 4170 LET FILE$ = "SCREEN1.TXT" ' DEFINE TEXT FILE
- 4180 LET MESSAGE$ = " "
- 4190 LET MODE = 0 ' COLOR MODE FOR INITIAL SCREEN
- 4200 GOSUB 3700 ' DISPLAY TEXT FILE SCREEN1.TXT
- 4210 '
- 4220 ' * MUSIC *
- 4230 ' LET TONE$ = "GB>DGAG"
- 4240 ' PLAY "MF MS T220 O4 XTONE$;"
- 4250 ' LET TONE$ = "GB>D<GAG"
- 4260 ' PLAY "MF MS T220 O3 XTONE$;"
- 4270 ' LET TONE$ = "GB>D<GDG"
- 4280 ' PLAY "MF MS T200 O2 XTONE$;P8 GG;"
- 4290 '
- 4300 LET TIME1! = VAL(RIGHT$(TIME$,2)) ' PAUSE FOR DISPLAY OF 1ST SCREEN
- 4310 IF TIME1! > 56 THEN LET TIME1! = -2 ' compensate for 59 seconds/min
- 4320 LET TIMEOUT = 1 ' FORCE 1 PASS THRU WHILE
- 4330 WHILE TIMEOUT
- 4340 LET TIMEOUT = 0 ' SET WHILE LOOP TO FALSE
- 4350 LET TIME2! = VAL(RIGHT$(TIME$,2))
- 4360 IF TIME2! <> TIME1! + 3 THEN LET TIMEOUT = 1
- 4370 WEND
- 4380 RETURN ' RETURN TO CORE PROGRAM
- 4390 '
- 4400 '
- 4410 ' *******************************************************************
- 4420 ' READ DATA *********************************************************
- 4430 '
- 4440 LET POINTER = 1 ' SET COUNTER
- 4450 RESTORE
- 4460 LET NOTDONE = 1 ' FORCE 1 PASS THRU WHILE
- 4470 WHILE NOTDONE ' LOOP FOR READING DATA
- 4480 LET NOTDONE = 0 ' LOOP FOR READING DATA
- 4490 READ TEMP1$, TEMP2$ ' READ DATA
- 4500 ' ASSIGN DATA TO STRING ARRAYS
- 4510 LET MENULINE$(POINTER) = TEMP1$ ' TEXT FOR MENU
- 4520 LET FILENAME$(POINTER) = TEMP2$ ' NAME OF CORRESPONDING TEXT FILE
- 4530 LET POINTER = POINTER + 1 ' INCREMENT LOOP COUNT BY ONE
- 4540 IF TEMP1$ <> "###" THEN LET NOTDONE = 1 ' EXIT FROM WHILE IF DONE
- 4550 WEND
- 4560 LET MENUNUMBER = POINTER -2 : RETURN ' SET NUMBER OF MENU ITEMS : RETURN
- 4570 '
- 4580 ' * DATA FOR MENU *
- 4590 '
- 4600 DATA A ASSIGN ........... ROUTES REQUESTS TO A DIFFERENT DRIVE,ASSIGN.TXT
- 4610 DATA B BACKUP ........... BACKS UP FIXED DISK FILES,BACKUP.TXT
- 4620 DATA C CD ............... CHANGES CURRENT DIRECTORY,CD.TXT
- 4630 DATA D CHKDSK ........... CHECKS DISK & REPORTS STATUS,CHKDSK.TXT
- 4640 DATA E CLS .............. CLEARS THE DISPLAY SCREEN,CLS.TXT
- 4650 DATA F COPY ............. COPIES FILES,COPY.TXT
- 4660 DATA G DIR .............. LISTS FILE NAMES,DIR.TXT
- 4670 DATA H DISKCOPY ......... COPY AN ENTIRE FLOPPY DISK,DISKCOPY.TXT
- 4680 DATA I ERASE ............ DELETES ONE OR MORE FILES,ERASE.TXT
- 4690 DATA J FORMAT ........... FORMATS A DISK,FORMAT.TXT
- 4700 DATA K MKDIR ............ CREATES A SUBDIRECTORY,MKDIR.TXT
- 4710 DATA L MODE ............. SETS MODE FOR SCREEN--PRINTER--COM,MODE.TXT
- 4720 DATA M PATH ............. SEARCHES DIRECTORIES FOR COMMANDS,PATH.TXT
- 4730 DATA N RECOVER .......... RECOVERS FILES FROM DISK,RECOVER.TXT
- 4740 DATA O RENAME ........... RENAMES FILES,RENAME.TXT
- 4750 DATA P RESTORE .......... RESTORES FILES TO FIXED DISK,RESTORE.TXT
- 4760 DATA Q RMDIR ............ REMOVES A SUBDIRECTORY,RMDIR.TXT
- 4770 DATA R SYS .............. TRANSFERS DOS TO A DISK,SYS.TXT
- 4780 DATA S TREE ............. DISPLAYS ALL DIRECTORY PATHS,TREE.TXT
- 4790 DATA T TYPE ............. DISPLAYS TEXT IN A FILE,TYPE.TXT
- 4800 DATA ###,###
- 4810 '
- 4820 END
- 4830 '
- 4840 '
- 4850 ' *******************************************************************
- 4860 ' ADVERTISING ******************************************************
- 4870 '
- 4880 CLS
- 4890 COLOR 23
- 4900 LOCATE 25,1 : PRINT "PRESS ANY KEY TO EXIT SYSTEM";
- 4910 COLOR 14
- 4920 LOCATE 1,25 : PRINT "RESTRICTED PERMISSION TO COPY"
- 4930 LOCATE 3,1 : PRINT "HELP for PC-DOS is not a public domain program. It is Copyright (C) 1985"
- 4940 LOCATE 4,1 : PRINT "by Kendrick & Company. Individuals and computer clubs are granted permission"
- 4950 LOCATE 5,1 : PRINT "to copy the program for their own use and for others to evaluate -- as"
- 4960 LOCATE 6,1 : PRINT "long as no price or other consideration is charged. Changes to the text or"
- 4970 LOCATE 7,1 : PRINT "program files are prohibited. In addition, the program may not be rented."
- 4980 LOCATE 9,27 : PRINT "BECOME A REGISTERED USER!"
- 4990 LOCATE 11,1 : PRINT "Send a check or money order for $15.00 along with your name and address to"
- 5000 LOCATE 12,1 : PRINT "become a registered user of HELP for PC-DOS. Here are the benefits:"
- 5010 LOCATE 14,1 : PRINT " * You will receive HELP Version 2.0 with many enhancements.";
- 5020 LOCATE 15,1 : PRINT " * You will be on our mailing list for future enhancements.";
- 5040 LOCATE 19,23 : PRINT "Kendrick & Company";
- 5050 LOCATE 20,23 : PRINT "800 Eighteenth Street, N.W. #500"
- 5060 LOCATE 21,23 : PRINT "Washington, DC 20006"
- 5070 GOSUB 2700
- 5080 RETURN
- 5090 '
- 5100 END
- 5110 '
-